1. Field of the Invention
The present invention relates to data storage management and, more particularly, to a system and methodology providing multiple heterogeneous buffer caches in distributed database management systems.
2. Description of the Background Art
Computers are very powerful tools for storing and providing access to vast amounts of information. Computer databases are a common mechanism for storing information on computer systems while providing easy access to users. A typical database is an organized collection of related information stored as “records” having “fields” of information. As an example, a database of employees may have a record for each employee where each record contains fields designating specifics about the employee, such as name, home address, salary, and the like.
Between the actual physical database itself (i.e., the data actually stored on a storage device) and the users of the system, a database management system or DBMS is typically provided as a software cushion or layer. In essence, the DBMS shields the database user from knowing or even caring about the underlying hardware-level details. Typically, all requests from users for access to the data are processed by the DBMS. For example, information may be added or removed from data files, information retrieved from or updated in such files, and so forth, all without user knowledge of the underlying system implementation. In this manner, the DBMS provides users with a conceptual view of the database that is removed from the hardware level. The general construction and operation of database management systems is well known in the art. See e.g., Date, C., “An Introduction to Database Systems, Seventh Edition”, Part I (especially Chapters 1-4), Addison Wesley, 2000.
In operation, a DBMS frequently needs to retrieve data from or persist data to storage devices such as disks. Unfortunately, access to such storage devices can be somewhat slow. To speed up access to data, databases typically employ a “cache” or “buffer cache” which is a section of relatively faster memory (e.g., RAM) allocated to store recently used data objects. Throughout the remainder of the specification, this faster memory will simply be referred to as “memory,” as distinguished from mass storage devices such as disks. Memory is typically provided on semiconductor or other electrical storage media and is coupled to the CPU via a fast data bus which enables data maintained in memory to be accessed more rapidly than data stored on disks.
As memory provided on computer systems has a limited size, some method must be employed for managing what content is maintained in cache memory. Conventionally, data storage systems employ some form of a “least recently used—most recently used” (LRU/MRU) protocol to queue data objects in the buffer cache. Basically, such LRU/MRU protocol moves the “most recently used” data object to the head of the queue while simultaneously moving data objects that have not been used one step towards the end of the queue. Thus, infrequently used objects migrate toward the end of the queue, and ultimately are deleted from the buffer cache to make room for new data objects copied from disks (i.e., infrequently used objects are displaced by more recently used objects). In this manner, the most recently used data objects are the only objects stored in the buffer cache at any given time.
Unfortunately, the basic LRU/MRU memory management protocol is subject to a number of limitations. As a result, other approaches providing for greater efficiency in management of data objects in cache have been adopted. For example, U.S. Pat. No. 6,061,763 provides for partitioning computer memory provided in a single cache, symmetric multiprocessor (SMP) system into plurality of buffer caches, each of which buffer caches is separately addressable and may be configured to retain data objects meeting specified criteria. Although this approach provides considerable performance improvements over the basic LRU/MRU protocol, problems remain in providing fast access to data in database systems.
Among the issues not addressed by current solutions is the fact that these existing solutions are not designed to address some of the problems faced in more modern distributed database systems. In recent years, users have demanded that database systems be continuously available, with no downtime, as they are frequently running applications that are critical to business operations. In response, distributed database systems have been introduced to provide for greater reliability. More recently, “Shared Disk Cluster” database systems have been introduced to provide increased reliability and scalability. A “Shared Disk Cluster” (or “SDC”) database system is a system that has a cluster of two or more database servers having shared access to a database on disk storage. The term “cluster” refers to the fact that these systems involve a plurality of networked server nodes which are clustered together to function as a single system. Each node in the cluster usually contains its own CPU and memory and all nodes in the cluster communicate with each other, typically through private interconnects. “Shared disk” refers to the fact that two or more database servers share access to the same disk image of the database. Shared Disk Cluster database systems provide for transparent, continuous availability of the applications running on the cluster with instantaneous failover amongst servers in the cluster. When one server is down (e.g., for upgrading the CPU) the applications are able to continue to operate against the shared data using the remaining machines in the cluster, so that a continuously available solution is provided. Shared Disk Cluster systems also enable users to address scalability problems by simply adding additional machines to the cluster, without major data restructuring and the associated system downtime that is common in prior SMP environments.
Although Shared Disk Cluster database systems provide increased availability and reliability, they also introduce a number of new challenges. Among these challenges are providing for memory management given that multiple servers share access to a common disk image of the database. With multiple servers sharing access to data, a standard global cache configuration is not a good solution for providing efficient access to data that is frequently used at a particular server in the cluster. In order to obtain better performance in this distributed database system environment, what is needed is the ability to define and provide caches on each server in the cluster. The solution should provide fast access to data objects frequently used by a particular application by localizing the access of the data pertaining to the application on a particular server instance(s) serving that application. Ideally, the solution should enable configuration of different caches on different instances to provide users and administrators increased flexibility in structuring the cache configuration at a particular instance in the cluster to best support the workload at that instance. The present invention provides a solution for these and other needs.